Computing devices often execute a boot process according to the Unified Extensible Firmware Interface (“UEFI”) specification, published by the Unified EFI Forum. The UEFI specification specifies an interface between the firmware of the computing device and the operating system of the computing device. The UEFI specification specifies a standard model for firmware drivers and applications that execute in a pre-operating system environment. In addition to performing traditional boot and initialization tasks, such drivers and applications may perform other tasks, such as diagnostic, maintenance, or management tasks.
Computing devices may boot from a network interface according to the Preboot Execution Environment (“PXE”) specification. Network booting with PXE generally requires the end user to have knowledge of the provisioning environment, for example, knowledge of the boot server address. Network booting with PXE may require a specialized boot server to provide remote boot images.
Network booting may be accomplished over various networks, including the Internet. Much of the data communicated over the Internet is communicated on the so-called World Wide Web, a system of interconnected web servers on the Internet that provide content to remote clients using the hypertext transfer protocol (“HTTP”). A web server provides content as a collection of resources, each resource being accessible by a unique address called a uniform resource locator (“URL”). Resources of the web server may correspond to individual files stored on or accessible to the web server, or to groups of such files (e.g. directories or folders). Resources representing groups of files may include index files that contain links to the other resources of the group. A client issues a request to a web server for a particular resource, and in turn the web server issues a response to the client. HTTP responses include status messages and may include the requested content itself. HTTP is thus “stateless,” meaning that the protocol does not require a persistent network connection between client and server. HTTP is plaintext; that is, requests, responses, and content are transferred over the network without encryption.
Authenticated or encrypted HTTP communication may be provided by layering HTTP communications on top of a secure transport-level protocol. For example, the HTTP Secure (“HTTPS”) protocol layers HTTP on top of a transport layer security (“TLS”) or secure sockets layer (“SSL”) connection. TLS/SSL specifies a standard handshake procedure used to initiate a secure connection between a client and a server. In addition to connection encryption, the TLS/SSL connection provides authentication of the server and, optionally, the client. Standard HTTP requests and responses are then communicated using the secure TLS/SSL connection. Note that the term “secure HTTP” as used herein refers to HTTPS, and not the similar but largely unused S-HTTP.